package com.sparkseries.common.log.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 系统日志实体类，用于记录系统操作的相关日志信息。
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("sys_log") // 假设表名为 sys_log，可根据实际情况修改
public class BaseLog implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 日志 ID，使用 MyBatis-Plus 的 ASSIGN_ID 策略自动分配
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 日志级别，如 INFO、WARN、ERROR 等
     */
    private String logLevel;

    /**
     * 日志类型，如系统日志、用户日志等
     */
    private String logType;

    /**
     * 操作描述，记录具体的操作内容
     */
    private String logOperation;

    /**
     * 创建者的标识，通常为用户名
     */
    private String createBy;

    /**
     * 创建者的真实姓名
     */
    private String createByName;

    /**
     * 日志创建的日期和时间
     */
    private Date createDate;

    /**
     * 请求的 URI，记录操作所对应的请求地址
     */
    private String requestUri;

    /**
     * 请求的方式，如 GET、POST 等
     */
    private String requestMethod;

    /**
     * 请求的参数，以字符串形式记录
     */
    private String requestParams;

    /**
     * 请求的时长，单位为毫秒
     */
    private Integer requestTime;

    /**
     * 用户代理信息，记录客户端的相关信息
     */
    private String userAgent;

    /**
     * 操作的 IP 地址，记录发起请求的客户端 IP
     */
    private String remoteAddr;

    /**
     * 请求服务器地址
     */
    private String serverAddr;

    /**
     * 操作结果标识
     * 0 表示失败
     * 1 表示成功
     */
    private Integer status;

    /**
     * 异常信息，当操作失败时记录具体的异常信息
     */
    private String errorInfo;

    /**
     * 日志详细信息
     */
    private String info;
}